<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
	<meta name="keywords" content="nacos,kubernetes" />
	<meta name="description" content="This project contains a Nacos Docker image meant to facilitate the deployment of Nacos on Kubernetes via StatefulSets." />
	<!-- 网页标签标题 -->
	<title>Kubernetes Nacos</title>
	<link rel="shortcut icon" href="https://img.alicdn.com/tfs/TB1hgJpHAPoK1RjSZKbXXX1IXXa-64-64.png"/>
	<link rel="stylesheet" href="/build/documentation.css" />
</head>
<body>
	<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/nacos_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a href="/en-us/index.html">HOME</a></li><li class="menu-item menu-item-normal menu-item-normal-active"><a href="/en-us/docs/quick-start.html">DOCS</a></li><li class="menu-item menu-item-normal"><a href="/en-us/blog">BLOG</a></li><li class="menu-item menu-item-normal"><a href="/en-us/community">COMMUNITY</a></li><li class="menu-item menu-item-normal"><a href="https://cn.aliyun.com/product/aliware/mse?spm=nacos-website.topbar.0.0.0">NACOS IN CLOUD</a><img class="menu-img" src="https://img.alicdn.com/tfs/TB1esl_m.T1gK0jSZFrXXcNCXXa-200-200.png"/></li><li class="menu-item menu-item-normal"><a href="http://console.nacos.io/nacos/index.html">DEMO-CONSOLE</a></li></ul></div></div></header><div class="bar"><div class="bar-body"><img src="/img/docs.png" class="front-img"/><div class="bar-title"><span>Documentation</span><div class="bone bone-light"></div></div><img src="/img/docs.png" class="back-img"/></div></div><section class="content-section"><div class="content-body"><div class="sidemenu"><div class="sidemenu-toggle"><img src="https://img.alicdn.com/tfs/TB1E6apXHGYBuNjy0FoXXciBFXa-200-200.png"/></div><ul><li class="menu-item menu-item-level-1"><span>Nacos </span><ul><li style="height:180px;overflow:hidden" class="menu-item menu-item-level-2"><span>What is Nacos<img style="transform:rotate(0deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/en-us/docs/what-is-nacos.html" target="_self">What is Nacos</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/concepts.html" target="_self">Concepts</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/architecture.html" target="_self">Architecure</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/feature-list.html" target="_self">Feature list</a></li></ul></li><li style="height:324px;overflow:hidden" class="menu-item menu-item-level-2"><span>Quick Start<img style="transform:rotate(0deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/en-us/docs/quick-start.html" target="_self">Nacos</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/quick-start-spring.html" target="_self">Nacos Spring</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/quick-start-spring-boot.html" target="_self">Nacos Spring Boot</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/quick-start-spring-cloud.html" target="_self">Nacos Spring Cloud</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/quick-start-docker.html" target="_self">Nacos Docker</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/use-nacos-with-dubbo.html" target="_self">Nacos with Dubbo</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/use-nacos-with-kubernetes.html" target="_self">Nacos with K8s</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/nacos-sync.html" target="_self">Nacos Sync</a></li></ul></li><li style="height:288px;overflow:hidden" class="menu-item menu-item-level-2"><span>User Guide<img style="transform:rotate(0deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/en-us/docs/sdk.html" target="_self">Java SDK</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/other-language.html" target="_self">Other Language</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/open-api.html" target="_self">Open-API</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/nacos-spring.html" target="_self">Nacos Spring</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/system-configurations.html" target="_self">Nacos System Configurations</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/auth.html" target="_self">Authentication</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/faq.html" target="_self">FAQ</a></li></ul></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><span>Admin Guide<img style="transform:rotate(-90deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/en-us/docs/deployment.html" target="_self">Deployment Guide</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/cluster-mode-quick-start.html" target="_self">Cluster Mode Deployment</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/management-api.html" target="_self">Management OpenAPI</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/console-guide.html" target="_self">Admin Console Guide</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/monitor-guide.html" target="_self">Nacos Monitor Guide</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/nacos-config-benchmark.html" target="_self">Nacos Config Benchmark</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/nacos2-config-benchmark.html" target="_self">Nacos2.0 Config Benchmark</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/nacos-naming-benchmark.html" target="_self">Nacos Naming Benchmark</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/nacos2-naming-benchmark.html" target="_self">Nacos2.0 Naming Benchmark</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/nacos-sync-use.html" target="_self">Data Migration to Nacos</a></li></ul></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><span>Nacos 2.0<img style="transform:rotate(-90deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/2.0.0-alpha.html" target="_self">2.0-BETA</a></li><li class="menu-item menu-item-level-3"><a href="/zh-cn/docs/2.0.0-upgrading.html" target="_self">Upgrading</a></li></ul></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><span>Contributor Guide<img style="transform:rotate(-90deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/en-us/docs/contributing.html" target="_self">Contribute to Nacos</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/contributing-flow.html" target="_self">Contributing Flow</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/pull-request.html" target="_self">Pull Request Template</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/how-to-reporting-bugs.html" target="_self">How to report bugs</a></li></ul></li><li style="height:36px;overflow:hidden" class="menu-item menu-item-level-2"><span>Community<img style="transform:rotate(-90deg)" class="menu-toggle" src="/img/arrow_down.png"/></span><ul><li class="menu-item menu-item-level-3"><a href="/en-us/docs/community.html" target="_self">Community</a></li><li class="menu-item menu-item-level-3"><a href="/en-us/docs/nacos-dev.html" target="_self">Develop Team</a></li></ul></li></ul></li></ul></div><div class="doc-content markdown-body"><h1>Kubernetes Nacos</h1>
<p>This project contains a Nacos Docker image meant to facilitate the deployment of <a href="https://nacos.io">Nacos</a> on <a href="https://kubernetes.io/">Kubernetes</a> via StatefulSets.</p>
<h1>Quick Start</h1>
<ul>
<li><strong>Clone Project</strong></li>
</ul>
<pre><code class="language-shell">git clone https://github.com/nacos-group/nacos-k8s.git
</code></pre>
<ul>
<li><strong>Simple Start</strong></li>
</ul>
<blockquote>
<p>If you want to start Nacos without NFS, but <strong>emptyDirs will possibly result in a loss of data</strong>. as follows:</p>
</blockquote>
<pre><code class="language-shell">cd nacos-k8s
chmod +x quick-startup.sh
./quick-startup.sh
</code></pre>
<ul>
<li>
<p><strong>Testing</strong></p>
<ul>
<li><strong>Service registration</strong></li>
</ul>
<pre><code class="language-powershell">curl <span class="hljs-literal">-X</span> PUT <span class="hljs-string">'http://cluster-ip:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&amp;ip=20.18.7.10&amp;port=8080'</span>
</code></pre>
<ul>
<li><strong>Service discovery</strong></li>
</ul>
<pre><code class="language-powershell">curl <span class="hljs-literal">-X</span> GET <span class="hljs-string">'http://cluster-ip:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName'</span>
</code></pre>
<ul>
<li><strong>Publish config</strong></li>
</ul>
<pre><code class="language-powershell">curl <span class="hljs-literal">-X</span> POST <span class="hljs-string">"http://cluster-ip:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&amp;group=test&amp;content=helloWorld"</span>
</code></pre>
<ul>
<li><strong>Get config</strong></li>
</ul>
<pre><code class="language-powershell">curl <span class="hljs-literal">-X</span> GET <span class="hljs-string">"http://cluster-ip:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&amp;group=test"</span>
</code></pre>
</li>
</ul>
<h1>Advanced</h1>
<blockquote>
<p>In advanced use, the cluster is automatically scaled and data is persisted, but <a href="https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims">PersistentVolumeClaims</a> must be deployed. In this example, NFS is used.</p>
</blockquote>
<h2>Deploy NFS</h2>
<ul>
<li>Create Role</li>
</ul>
<pre><code class="language-shell">kubectl create -f deploy/nfs/rbac.yaml
</code></pre>
<blockquote>
<p>If your K8S namespace is not default, execute the following script before creating RBAC</p>
</blockquote>
<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> Set the subject of the RBAC objects to the current namespace <span class="hljs-built_in">where</span> the provisioner is being deployed</span>
<span class="hljs-meta">$</span><span class="bash"> NS=$(kubectl config get-contexts|grep -e <span class="hljs-string">"^\*"</span> |awk <span class="hljs-string">'{print $5}'</span>)</span>
<span class="hljs-meta">$</span><span class="bash"> NAMESPACE=<span class="hljs-variable">${NS:-default}</span></span>
<span class="hljs-meta">$</span><span class="bash"> sed -i<span class="hljs-string">''</span> <span class="hljs-string">"s/namespace:.*/namespace: <span class="hljs-variable">$NAMESPACE</span>/g"</span> ./deploy/nfs/rbac.yaml</span>

</code></pre>
<ul>
<li>Create <code>ServiceAccount</code> And deploy <code>NFS-Client Provisioner</code></li>
</ul>
<pre><code class="language-shell">kubectl create -f deploy/nfs/deployment.yaml
</code></pre>
<ul>
<li>Create NFS StorageClass</li>
</ul>
<pre><code class="language-shell">kubectl create -f deploy/nfs/class.yaml
</code></pre>
<ul>
<li>Verify that NFS is working</li>
</ul>
<pre><code class="language-shell">kubectl get pod -l app=nfs-client-provisioner
</code></pre>
<h2>Deploy database</h2>
<ul>
<li>Deploy master</li>
</ul>
<pre><code class="language-shell">
cd nacos-k8s

kubectl create -f deploy/mysql/mysql-master-nfs.yaml
</code></pre>
<ul>
<li>Deploy slave</li>
</ul>
<pre><code class="language-shell">
cd nacos-k8s 

kubectl create -f deploy/mysql/mysql-slave-nfs.yaml
</code></pre>
<ul>
<li>Verify that Database is working</li>
</ul>
<pre><code class="language-shell"><span class="hljs-meta">#</span><span class="bash"> master</span>
kubectl get pod 
NAME                         READY   STATUS    RESTARTS   AGE
mysql-master-gf2vd                        1/1     Running   0          111m
<span class="hljs-meta">
#</span><span class="bash"> slave</span>
kubectl get pod 
mysql-slave-kf9cb                         1/1     Running   0          110m
</code></pre>
<h2>Deploy Nacos</h2>
<ul>
<li>Modify  <strong>deploy/nacos/nacos-pvc-nfs.yaml</strong></li>
</ul>
<pre><code class="language-yaml"><span class="hljs-attr">data:</span>
  <span class="hljs-attr">mysql.master.db.name:</span> <span class="hljs-string">"db name"</span>
  <span class="hljs-attr">mysql.master.port:</span> <span class="hljs-string">"master db port"</span>
  <span class="hljs-attr">mysql.slave.port:</span> <span class="hljs-string">"slave db port"</span>
  <span class="hljs-attr">mysql.master.user:</span> <span class="hljs-string">"master db username"</span>
  <span class="hljs-attr">mysql.master.password:</span> <span class="hljs-string">"master db password"</span>
</code></pre>
<ul>
<li>Create Nacos</li>
</ul>
<pre><code class="language-shell">kubectl create -f nacos-k8s/deploy/nacos/nacos-pvc-nfs.yaml
</code></pre>
<ul>
<li>Verify that Nacos is working</li>
</ul>
<pre><code class="language-shell">kubectl get pod -l app=nacos


NAME      READY   STATUS    RESTARTS   AGE
nacos-0   1/1     Running   0          19h
nacos-1   1/1     Running   0          19h
nacos-2   1/1     Running   0          19h
</code></pre>
<h2>Scale Testing</h2>
<ul>
<li>Use <a href="https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands/#exec"><code>kubectl exec</code></a> to get the cluster config of the Pods in the <code>nacos</code> StatefulSet.</li>
</ul>
<pre><code class="language-powershell"><span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-number">0</span> <span class="hljs-number">1</span>; <span class="hljs-keyword">do</span> echo nacos-<span class="hljs-variable">$i</span>; kubectl exec nacos-<span class="hljs-variable">$i</span> cat conf/cluster.conf; done
</code></pre>
<p>The StatefulSet controller provides each Pod with a unique hostname based on its ordinal index. The hostnames take the form of <code>&lt;statefulset name&gt;-&lt;ordinal index&gt;</code>. Because the <code>replicas</code> field of the <code>nacos</code> StatefulSet is set to <code>2</code>, In the cluster file only two nacos address</p>
<p><img src="https://cdn.nlark.com/yuque/0/2019/gif/338441/1562846123635-e361d2b5-4bbe-4347-acad-8f11f75e6d38.gif" alt="k8s"></p>
<ul>
<li>Use kubectl to scale StatefulSets</li>
</ul>
<pre><code class="language-bash">kubectl scale sts nacos --replicas=3
</code></pre>
<p><img src="https://cdn.nlark.com/yuque/0/2019/gif/338441/1562846139093-7a79b709-9afa-448a-b7d6-f57571d3a902.gif" alt="scale"></p>
<ul>
<li>Use <a href="https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands/#exec"><code>kubectl exec</code></a> to get the cluster config of the Pods in the <code>nacos</code> StatefulSet after scale StatefulSets</li>
</ul>
<pre><code class="language-bash"><span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> 0 1 2; <span class="hljs-keyword">do</span> <span class="hljs-built_in">echo</span> nacos-<span class="hljs-variable">$i</span>; kubectl <span class="hljs-built_in">exec</span> nacos-<span class="hljs-variable">$i</span> cat conf/cluster.conf; <span class="hljs-keyword">done</span>
</code></pre>
<p><img src="https://cdn.nlark.com/yuque/0/2019/gif/338441/1562846177553-c1c7f379-1b41-4026-9f0b-23e15dde02a8.gif" alt="get_cluster_after"></p>
<ul>
<li>Use <a href="https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands/#exec"><code>kubectl exec</code></a> to get the <strong>state</strong> of the Pods in the <code>nacos</code> StatefulSet after scale StatefulSets</li>
</ul>
<pre><code class="language-bash"><span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> 0 1 2; <span class="hljs-keyword">do</span> <span class="hljs-built_in">echo</span> nacos-<span class="hljs-variable">$i</span>; kubectl <span class="hljs-built_in">exec</span> nacos-<span class="hljs-variable">$i</span> curl -X GET <span class="hljs-string">"http://localhost:8848/nacos/v1/ns/raft/state"</span>; <span class="hljs-keyword">done</span>
</code></pre>
<p>You can find that the new node has joined the cluster</p>
<h1>Prerequisites</h1>
<ul>
<li>Kubernetes Node configuration(for reference only)</li>
</ul>
<table>
<thead>
<tr>
<th>Network IP</th>
<th>Hostname</th>
<th>Configuration</th>
</tr>
</thead>
<tbody>
<tr>
<td>172.17.79.3</td>
<td>k8s-master</td>
<td>CentOS Linux release 7.4.1708 (Core) Single-core processor Mem 4G Cloud disk 40G</td>
</tr>
<tr>
<td>172.17.79.4</td>
<td>node01</td>
<td>CentOS Linux release 7.4.1708 (Core) Single-core processor Mem 4G Cloud disk 40G</td>
</tr>
<tr>
<td>172.17.79.5</td>
<td>node02</td>
<td>CentOS Linux release 7.4.1708 (Core) Single-core processor Mem 4G Cloud disk 40G</td>
</tr>
</tbody>
</table>
<ul>
<li>Kubernetes version：<strong>1.12.2+</strong></li>
<li>NFS version：<strong>4.1+</strong></li>
</ul>
<h1>Limitations</h1>
<ul>
<li>Persistent Volumes must be used. emptyDirs will possibly result in a loss of data</li>
</ul>
<h1>Project directory</h1>
<table>
<thead>
<tr>
<th>Directory Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>plugin</code></td>
<td>Help Nacos cluster achieve automatic scaling in K8s</td>
</tr>
<tr>
<td><code>deploy</code></td>
<td>Deploy the required files</td>
</tr>
</tbody>
</table>
<h1>Configuration properties</h1>
<ul>
<li>nacos-pvc-nfs.yaml or nacos-quick-start.yaml</li>
</ul>
<table>
<thead>
<tr>
<th>Name</th>
<th>Required</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>mysql.master.db.name</code></td>
<td>Y</td>
<td>Master database name</td>
</tr>
<tr>
<td><code>mysql.master.port</code></td>
<td>N</td>
<td>Master database port</td>
</tr>
<tr>
<td><code>mysql.slave.port</code></td>
<td>N</td>
<td>Slave database port</td>
</tr>
<tr>
<td><code>mysql.master.user</code></td>
<td>Y</td>
<td>Master database username</td>
</tr>
<tr>
<td><code>mysql.master.password</code></td>
<td>Y</td>
<td>Master database password</td>
</tr>
<tr>
<td><code>NACOS_REPLICAS</code></td>
<td>Y</td>
<td>The number of clusters must be consistent with the value of the replicas attribute</td>
</tr>
<tr>
<td><code>NACOS_SERVER_PORT</code></td>
<td>N</td>
<td>Nacos port,default:8848</td>
</tr>
<tr>
<td><code>PREFER_HOST_MODE</code></td>
<td>Y</td>
<td>Enable Nacos cluster node domain name support</td>
</tr>
</tbody>
</table>
<ul>
<li><strong>nfs</strong> deployment.yaml</li>
</ul>
<table>
<thead>
<tr>
<th>Name</th>
<th>Required</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>NFS_SERVER</code></td>
<td>Y</td>
<td>NFS server address</td>
</tr>
<tr>
<td><code>NFS_PATH</code></td>
<td>Y</td>
<td>NFS server shared directory</td>
</tr>
<tr>
<td><code>server</code></td>
<td>Y</td>
<td>NFS server address</td>
</tr>
<tr>
<td><code>path</code></td>
<td>Y</td>
<td>NFS server shared directory</td>
</tr>
</tbody>
</table>
<ul>
<li>mysql yaml</li>
</ul>
<table>
<thead>
<tr>
<th>Name</th>
<th>Required</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>MYSQL_ROOT_PASSWORD</code></td>
<td>N</td>
<td>Root password</td>
</tr>
<tr>
<td><code>MYSQL_DATABASE</code></td>
<td>Y</td>
<td>Database Name</td>
</tr>
<tr>
<td><code>MYSQL_USER</code></td>
<td>Y</td>
<td>Database Username</td>
</tr>
<tr>
<td><code>MYSQL_PASSWORD</code></td>
<td>Y</td>
<td>Database Password</td>
</tr>
<tr>
<td><code>MYSQL_REPLICATION_USER</code></td>
<td>Y</td>
<td>Master-slave replication username</td>
</tr>
<tr>
<td><code>MYSQL_REPLICATION_PASSWORD</code></td>
<td>Y</td>
<td>Master-slave replication password</td>
</tr>
<tr>
<td><code>Nfs:server</code></td>
<td>Y</td>
<td>NFS server address</td>
</tr>
<tr>
<td><code>Nfs:path</code></td>
<td>Y</td>
<td>NFS server shared path</td>
</tr>
</tbody>
</table>
</div></div></section><footer class="footer-container"><div class="footer-body"><img src="/img/nacos_gray.png"/><div class="cols-container"><div class="col col-12"><h3>Vision</h3><p>By providing an easy-to-use service infrastructure such as dynamic service discovery, service configuration, service sharing and management and etc., Nacos help users better construct, deliver and manage their own service platform, reuse and composite business service faster and deliver value of business innovation more quickly so as to win market for users in the era of cloud native and in all cloud environments, such as private, mixed, or public clouds.</p></div><div class="col col-6"><dl><dt>Documentation</dt><dd><a href="/en-us/docs/what-is-nacos.html" target="_self">Overview</a></dd><dd><a href="/en-us/docs/quick-start.html" target="_self">Quick start</a></dd><dd><a href="/en-us/docs/contributing.html" target="_self">Developer guide</a></dd></dl></div><div class="col col-6"><dl><dt>Resources</dt><dd><a href="/en-us/community/index.html" target="_self">Community</a></dd><dd><a href="https://cn.aliyun.com/product/aliware/mse?spm=nacos-website.topbar.0.0.0" target="_self">Cloud Service MSE</a></dd><dd><a href="https://www.aliyun.com/product/edas?source_type=nacos_pc_20181219" target="_self">Cloud Service EDAS</a></dd><dd><a href="https://www.aliyun.com/product/ahas?source_type=nacos_pc_20190225" target="_self">Cloud Service AHAS</a></dd></dl></div></div><div class="copyright"><span>@ 2018 The Nacos Authors | An Alibaba Middleware (Aliware) Project</span></div></div></footer></div></div>
	<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
	<script src="https://f.alicdn.com/react/15.4.1/react-dom.min.js"></script>
	<script>
		window.rootPath = '';
  </script>
	<script src="/build/documentation.js"></script>
</body>
</html>